[联合封禁]BanAPI

BanAPI是一个Minecraft服务端插件,用于与外部封禁API集成,实现玩家封禁信息的统一管理。该插件支持本地API和公共封禁数据库两种方式,可以有效防止不良玩家进入服务器。

适用核心 Paper 适用版本 1.20.1+ 是否付费 否 最新版本 v1.0.0

目录概要

1. 基础

插件简介

BanAPI 插件文档

BanAPI 是一个 Minecraft 服务端插件,用于与外部封禁API集成,实现玩家封禁信息的统一管理。该插件支持本地API和公共封禁数据库两种方式,可以有效防止不良玩家进入服务器。

主要特性

  • 外部API集成 - 与外部封禁API集成,实现玩家封禁信息同步
  • 本地封禁管理 - 支持本地封禁管理和公共封禁数据库查询
  • 自动检查机制 - 玩家登录时自动检查封禁状态
  • BungeeCord支持 - 支持BungeeCord网络环境下的玩家踢出
  • 丰富管理命令 - 提供丰富的管理命令和查询功能
  • 自定义消息 - 可自定义封禁消息和广播格式
  • 定时更新 - 支持定时更新封禁列表

主要功能

主要功能

1. 外部API集成

  • API连接 - 与外部封禁API集成,实现玩家封禁信息同步
  • 数据同步 - 实时同步封禁数据,确保信息准确性
  • API密钥 - 支持API访问密钥,确保数据安全
  • 错误处理 - 完善的错误处理机制

2. 本地封禁管理

  • 本地封禁 - 支持本地封禁记录管理
  • 封禁查询 - 快速查询玩家封禁状态
  • 封禁统计 - 提供详细的封禁统计信息
  • 封禁历史 - 记录完整的封禁历史

3. 公共封禁数据库

  • 公共API - 支持查询公共封禁数据库
  • IP检查 - 支持IP地址封禁检查
  • 警告系统 - 对公共封禁列表中的玩家发送警告
  • 日志记录 - 记录公共封禁查询日志

4. 自动检查机制

  • 登录检查 - 玩家登录时自动检查封禁状态
  • 关键词过滤 - 检查玩家名是否包含关键词"api"
  • 踢出机制 - 自动踢出被封禁的玩家
  • 消息通知 - 发送封禁消息给玩家

5. BungeeCord支持

  • 网络支持 - 支持BungeeCord网络环境
  • 跨服踢出 - 在整个网络中踢出被封禁的玩家
  • 通道通信 - 通过指定通道发送踢出消息
  • 网络同步 - 确保封禁信息在网络中同步

权限节点

权限节点

权限节点 描述 默认值
banapi.getapi 允许查看BanAPI的API信息 OP
banapi.admin 允许管理BanAPI的封禁记录 OP
banapi.publicban 允许查询公共封禁API的信息 OP
banapi.alerts 允许接收公共封禁API的警告消息 OP

权限说明

  • API信息权限 - 允许查看BanAPI的API配置信息
  • 管理权限 - 允许管理封禁记录,包括添加、删除、查询等
  • 公共封禁权限 - 允许查询公共封禁API的信息
  • 警告权限 - 允许接收公共封禁API的警告消息
  • 默认设置 - 所有管理权限默认分配给OP

命令系统

命令系统

API信息命令

/getapi

  • 权限: banapi.getapi(默认为 OP)
  • 用法: /getapi
  • 功能: 获取BanAPI的API信息
  • 说明: 显示当前配置的API地址和状态

封禁管理命令

/banapi

  • 权限: banapi.admin(默认为 OP)
  • 子命令:
    • list - 显示所有封禁列表
    • stats - 显示封禁统计信息
    • ban <玩家名> <原因> <管理员> [永久] [时长] - 添加封禁记录
    • release <ID> - 解除指定ID的封禁

公共封禁命令

/publicban

  • 权限: banapi.publicban(默认为 OP)
  • 子命令:
    • list - 显示公共封禁列表
    • stats - 显示公共封禁统计信息
    • check <玩家名> - 检查玩家是否在公共封禁列表中
    • checkip <IP地址> - 检查IP是否在公共封禁列表中

命令示例

# 查看API信息
/getapi

# 查看封禁列表
/banapi list

# 添加封禁记录
/banapi ban Steve 使用作弊客户端 Admin true

# 解除封禁
/banapi release 12345

# 检查公共封禁
/publicban check Alex

# 检查IP封禁
/publicban checkip 192.168.1.1

2. 配置

配置文件

配置文件 (config.yml)

# BanAPI 插件配置
api:
  # API服务器地址
  url: "http://localhost:5000"
  # API访问密钥
  key: "bans-api-secret-key-12345"

# BungeeCord支持配置
bungee:
  # 是否启用BungeeCord支持
  enabled: false
  # BungeeCord通道名称
  channel: "BungeeCord"

# 公共API配置
public-api:
  # 是否启用公共API检查
  enabled: true
  # 警告消息格式
  warning-format: |
    §c[BanAPI预警] §e玩家 {nickname} §c在公共封禁列表中
    §7IP: §f{ip}
    §7原因: §f{reason}
    §7封禁时间: §f{timestamp}
  # 是否记录警告日志
  log-warnings: true

# 自动更新设置 (秒)
update-interval: 60

# 封禁广播配置
broadcast:
  enabled: true
  format: "§c[封禁公告] 玩家 §e{nickname} §c已被管理员 §e{admin} §c封禁\n§7原因: §f{reason}\n§7累计封禁数: §f{total}"

# 封禁消息配置
ban-message:
  # 玩家被封禁时看到的消息
  format: |
    §4§l您已被服务器封禁!
    §c▶ §f原因: §e{reason}
    §c▶ §f管理员: §e{admin}
    §c▶ §f封禁时间: §e{startTime}
    §c▶ §f封禁类型: §e{banType}
    §c▶ §f解封时间: §e{endTime}
    §c▶ §f封禁ID: §7#{id}
    
    §7如有异议,请前往discord.gg/xxxxx
    §7或填写申诉表单https:xxxxx

配置项说明

  • api - API服务器配置,包括地址和访问密钥
  • bungee - BungeeCord网络支持配置
  • public-api - 公共封禁API配置
  • update-interval - 自动更新间隔(秒)
  • broadcast - 封禁广播配置
  • ban-message - 封禁消息格式配置

占位符说明

占位符说明

封禁广播占位符

占位符 描述
{nickname} 被封禁玩家的昵称
{admin} 执行封禁的管理员
{reason} 封禁原因
{total} 总封禁数量

封禁消息占位符

占位符 描述
{id} 封禁记录ID
{reason} 封禁原因
{admin} 执行封禁的管理员
{startTime} 封禁开始时间
{endTime} 封禁结束时间
{banType} 封禁类型(永久/临时)
{isPermanent} 是否永久封禁

警告消息占位符

占位符 描述
{nickname} 玩家昵称
{ip} 玩家IP地址
{reason} 封禁原因
{timestamp} 封禁时间戳

使用示例

# 封禁广播示例
broadcast:
  format: "§c[封禁公告] 玩家 §e{nickname} §c已被管理员 §e{admin} §c封禁"

# 封禁消息示例
ban-message:
  format: |
    §4§l您已被服务器封禁!
    §c▶ §f原因: §e{reason}
    §c▶ §f管理员: §e{admin}
    §c▶ §f封禁ID: §7#{id}

# 警告消息示例
warning-format: |
  §c[BanAPI预警] §e玩家 {nickname} §c在公共封禁列表中
  §7IP: §f{ip}
  §7原因: §f{reason}

API集成

API集成

API服务器配置

插件支持与外部封禁API集成,需要配置以下信息:

  • API地址 - 外部封禁API的服务器地址
  • 访问密钥 - API访问认证密钥
  • 更新间隔 - 数据同步更新间隔

API数据格式

插件期望的API返回数据格式:

{
  "success": true,
  "data": [
    {
      "id": "12345",
      "player": "Steve",
      "reason": "使用作弊客户端",
      "admin": "Admin",
      "startTime": "2024-01-01T00:00:00Z",
      "endTime": "2024-12-31T23:59:59Z",
      "isPermanent": false
    }
  ]
}

错误处理

插件包含完善的错误处理机制:

  • 网络错误 - 处理API连接失败
  • 数据格式错误 - 处理API返回数据格式错误
  • 认证错误 - 处理API密钥错误
  • 超时处理 - 处理API请求超时

本地API搭建

插件支持自己搭建API服务,项目已在GitHub开源:

  • 作者: chenasyd
  • 开源地址: GitHub
  • 技术栈: 可根据需要选择合适的技术栈
  • 部署方式: 支持Docker、云服务器等多种部署方式

3. 安装使用

安装步骤

安装步骤

1. 下载插件

  • 从官方渠道下载最新版本的 BanAPI 插件
  • 确保下载的版本与服务器版本兼容(需要 Paper 1.20.1+)

2. 安装依赖

确保服务器已安装以下依赖:

  • Paper 1.20.1+ - 服务端核心
  • Java 17+ - 运行环境
  • 外部API服务 - 封禁API服务(可选)

3. 配置文件设置

  1. 启动服务器生成配置文件
  2. 修改 config.yml 中的API配置
  3. 根据需要调整封禁消息格式
  4. 设置BungeeCord支持(如需要)

4. 重启服务器

重启服务器使配置生效,插件开始工作。

5. 验证安装

使用 /getapi 命令验证插件是否正确安装。

使用方法

使用方法

基本使用

  1. 查看API信息

    /getapi
    
  2. 查看封禁列表

    /banapi list
    
  3. 查看封禁统计

    /banapi stats
    

封禁管理

  1. 添加封禁记录

    /banapi ban <玩家名> <原因> <管理员> [永久] [时长]
    

    示例:/banapi ban Steve 使用作弊客户端 Admin true

  2. 解除封禁

    /banapi release <ID>
    

    示例:/banapi release 12345

公共封禁查询

  1. 检查玩家封禁

    /publicban check <玩家名>
    

    示例:/publicban check Alex

  2. 检查IP封禁

    /publicban checkip <IP地址>
    

    示例:/publicban checkip 192.168.1.1

  3. 查看公共封禁列表

    /publicban list
    
  4. 查看公共封禁统计

    /publicban stats
    

配置管理

  1. 编辑配置文件

    • 编辑 plugins/BanAPI/config.yml
    • 修改API地址和密钥
    • 调整封禁消息格式
  2. 重启服务器

    • 重启服务器使配置生效
    • 或使用重载命令(如果支持)

常见使用场景

  1. 玩家登录检查

    • 插件自动检查玩家封禁状态
    • 自动踢出被封禁的玩家
    • 发送封禁消息给玩家
  2. 管理员封禁操作

    • 使用命令添加封禁记录
    • 查看封禁统计信息
    • 管理封禁列表
  3. 公共封禁监控

    • 查询公共封禁数据库
    • 接收封禁警告消息
    • 监控可疑玩家

故障排除

故障排除

常见问题

Q: 插件无法连接到API

A: 检查以下设置:

  • 检查配置文件中的API地址是否正确
  • 确认API密钥是否正确
  • 检查服务器网络连接是否正常
  • 确认API服务器是否正常运行
  • 检查防火墙设置

Q: 玩家未被正确封禁

A: 确保:

  • 检查API返回的数据格式是否正确
  • 确认封禁列表是否已更新
  • 检查插件日志以获取更多信息
  • 确认封禁记录是否已正确添加
  • 检查API服务器状态

Q: BungeeCord环境下踢出不生效

A: 确保:

  • 确认已正确启用BungeeCord支持
  • 检查BungeeCord通道名称是否正确
  • 确保BungeeCord端也安装了相应的插件
  • 检查网络配置

Q: 公共封禁查询不工作

A: 检查:

  • 确认公共API功能已启用
  • 检查网络连接
  • 查看控制台错误信息
  • 确认API服务可用

Q: 封禁消息格式错误

A: 确保:

  • 检查配置文件中的消息格式
  • 确认占位符语法正确
  • 检查YAML格式
  • 重新加载配置

日志查看

插件会在控制台输出相关信息,可以通过日志排查问题:

  • 插件启用/禁用信息
  • API连接状态
  • 封禁检查日志
  • 错误信息
  • 网络通信状态

性能优化

  • 合理设置更新间隔,避免过于频繁的API请求
  • 优化API响应时间
  • 定期清理过期的封禁记录
  • 监控插件性能指标

4. 注意事项

重要提醒

注意事项

1. API服务要求

  • 插件需要外部封禁API服务支持
  • 确保API服务器稳定运行
  • 定期检查API服务状态
  • 备份API配置信息

2. 数据安全

  • 妥善保管API访问密钥
  • 定期更换API密钥
  • 监控API访问日志
  • 限制API访问权限

3. 性能考虑

  • 合理设置API更新间隔
  • 避免过于频繁的API请求
  • 优化API响应时间
  • 监控网络带宽使用

4. 兼容性

  • 确保与其他插件的兼容性
  • 测试不同版本的 Minecraft 服务器
  • 备份重要配置
  • 在测试环境中先验证功能

5. 安全建议

  • 定期更新插件版本
  • 监控异常活动
  • 限制权限使用
  • 备份配置文件

6. 维护建议

  • 定期检查插件更新
  • 监控API服务状态
  • 清理无用的封禁记录
  • 优化配置文件设置

7. 依赖关系

  • Paper 1.20.1+ - 服务端核心要求
  • Java 17+ - 运行环境要求
  • 外部API服务 - 封禁API服务
  • 网络连接 - 稳定的网络连接

8. 开发者信息

BanAPI插件使用以下技术栈开发:

  • Java 17 - 编程语言
  • Paper API 1.20.1 - 服务端API
  • OkHttp3 - 网络库
  • Gson - JSON解析库
  • SnakeYAML - 配置文件解析库

插件遵循标准的Bukkit插件开发规范,易于维护和扩展。

9. 开源信息

  • 作者: chenasyd
  • 开源地址: GitHub
  • 许可证: 开源
  • 技术栈: Java 17, Paper API

这个插件为Minecraft服务器提供了强大的封禁管理功能,通过与外部API集成,实现了高效的玩家封禁信息管理,有效提升了服务器的安全性。